/**
 * 
 */
package com.qolome.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Description: 正则表达工具类
 * @author 姜锋
 * @date 2018年10月24日 上午9:40:09
 * @version V1.0
 */
public class RegularUtils {
	// 邮箱
	public final static String REGULAR_EMAIL = "[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?";
	// 电话
	public final static String REGULAR_TELPHONE = "\\d{3}-\\d{8}|\\d{4}-\\{7,8}";
	// 手机
	public final static String REGULAR_MOBILEPHONE = "0?(13|14|15|17|18|19)[0-9]{9}";
	// 弱密码(8-20字符)
	public final static String REGULAR_PASSWORD_LOW = "\\w{8,20}";
	
	// 8-20个字符，至少1个大写字母，1个小写字母和1个数字，1个特殊字符：
	public final static String REGULAR_PASSWORD_STRONG_TYPE1 = "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,20}$";
	// 8-20个字符，至少1个大写字母，1个小写字母，其他可以是任意字符;
	public final static String REGULAR_PASSWORD_STRONG_TYPE2 = "^(?=.*[a-z])(?=.*[A-Z])[A-Za-z0-9d$@$!%*#?&]{8,20}$";
	// 8-20个字符，至少1个字母，1个数字，其他可以是任意字符;
	public final static String REGULAR_PASSWORD__STRONG_TYPE3 = "^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9$@$!%*#?&]{8,20}$";
	// 8-20个字符，至少1个字母，1个特殊符号，其他可以是任意字符;
	public final static String REGULAR_PASSWORD__STRONG_TYPE4 = "^(?=.*[A-Za-z])(?=.*[$@!%*#?&])[A-Za-z0-9$@$!%*#?&]{8,20}$";
	// 8-20个字符，至少1个特殊符号，1个数字，其他可以是任意字符;
	public final static String REGULAR_PASSWORD__STRONG_TYPE5 = "^(?=.*[0-9])(?=.*[$@!%*#?&])[A-Za-z0-9d$@$!%*#?&]{8,20}$";
	// IPv4地址
	public final static String REGULAR_IPV4 = "(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)";
	// 邮政编码
	public final static String REGULAR_POSTAL_CODE = "^[1-9]\\d{5}$";
	// QQ
	public final static String REGULAR_QQ = "^[1-9]\\d{4,10}$ ";
	// URL
	public final static String REGULAR_URL = "^((http|https)://)?([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$ ";
	// 身份证号
	public final static String REGULAR_ID_NUMBER = "^(\\d{6})(18|19|20)?(\\d{2})([01]\\d)([0123]\\d)(\\d{3})(\\d|X|x)?$";
	//UUID正则
	public final static String REGULAR_UUID = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$";
	
	public static boolean check(String regularType, String str, boolean ignoreCase) {
		Pattern pattern = null;
		// 忽略大小写
		if (!ignoreCase) {
			pattern = Pattern.compile(regularType);
		} else {
			Pattern.compile(regularType, Pattern.CASE_INSENSITIVE);
		}
		Matcher matcher = pattern.matcher(str);
		return matcher.matches();
	}
}
